package coupon

type Coupon struct {
	Id         int    `gorm:"column:id" json:"id"`                  // 主键
	IsNew      int    `gorm:"column:is_new" json:"isNew"`           // 是否只能新人使用 新人使用 1 ， 所有人9
	Type       int    `gorm:"column:type" json:"type"`              // 优惠券类型：满减券1，折扣券2 ,现金券 3
	Name       string `gorm:"column:name" json:"name"`              // 优惠券名称
	TotalCount int    `gorm:"column:total_count" json:"totalCount"` // 发放数量
	Threshold  int    `gorm:"column:threshold" json:"threshold"`    // 使用门槛,满足条件后使用，默认0
	Discounts  int    `gorm:"column:discounts" json:"discounts"`    // 实际优惠
	StartTime  int    `gorm:"column:start_time" json:"startTime"`   // 有效期（开始时间）
	EndTime    int    `gorm:"column:end_time" json:"endTime"`       // 已失效（结束时间）
	Status     int    `gorm:"column:status" json:"status"`          // 优惠券状态：未开始 1，进行中 2 ，已结束 3， 已终止 4，

	//优惠券的新增修改，添加字段
	MemberTypeId   string `gorm:"column:member_type_id" json:"memberTypeId"`     //会员类型Id
	MemberTypeName string `gorm:"column:member_type_name" json:"memberTypeName"` //会员类型名称
	ProjectLabel   string `gorm:"column:project_label" json:"projectLabel"`      //项目标识
}

// model init
func New() *Coupon {
	return &Coupon{}
}

// TableName
func (m *Coupon) TableName() string {
	return "coupon"
}

func (m *Coupon) Mutate(attrs ...WithdrawalLogAttr) *Coupon {
	WithdrawalLogAttrs(attrs).Apply(m)
	return m
}

type RoomCouponRecord struct {
	Id         int    `gorm:"column:id" json:"id"`                // 主键
	PlaceId    int    `gorm:"column:place_id" json:"placeId"`     // 网点ID
	PlaceRoom  string `gorm:"column:place_room" json:"placeRoom"` // 房间
	DeviceSn   string `gorm:"column:device_sn" json:"deviceSn"`   // 设备标识SN
	Status     uint8  `gorm:"column:status" json:"status"`        // 状态 1-已使用 2-未使用
	MaxAmount  int    `gorm:"column:max_amount" json:"maxAmount"` // 最大抵扣金额 单位：分
	Amount     int    `gorm:"column:amount" json:"amount"`        // 最大抵扣金额 单位：分
	EndTime    string `gorm:"column:end_time" json:"endTime"`
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
	TradeNo    string `gorm:"column:trade_no" json:"tradeNo"`
}

type OrderCoupon struct {
	OrderCouponDb
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}
type OrderCouponDb struct {
	Id           int    `gorm:"column:id" json:"id"`
	PlaceId      int    `gorm:"column:place_id" json:"placeId"`
	Discounts    int    `gorm:"column:discounts" json:"discounts"`
	Threshold    int    `gorm:"column:threshold" json:"threshold"`
	Num          int    `gorm:"column:num" json:"num"`
	GrantNum     int    `gorm:"column:grant_num" json:"grantNum"`
	Type         uint8  `gorm:"column:type" json:"type"`
	OrderType    uint8  `gorm:"column:order_type" json:"orderType"`
	Status       uint8  `gorm:"column:status" json:"status"`
	Name         string `gorm:"column:name" json:"name"`
	ProjectLabel string `gorm:"column:project_label" json:"projectLabel"`
	Message      string `gorm:"column:message" json:"message"`
	StartTime    string `gorm:"column:start_time" json:"startTime"`
	EndTime      string `gorm:"column:end_time" json:"endTime"`
}

func (m *OrderCouponDb) TableName() string {
	return "order_coupon"
}

type OrderCouponRecord struct {
	OrderCouponRecordDb
	CreateTime string `gorm:"column:create_time" json:"createTime"`
	UpdateTime string `gorm:"column:update_time" json:"updateTime"`
}
type OrderCouponRecordDb struct {
	Id              int    `gorm:"column:id" json:"id"`
	MemberId        int    `gorm:"column:member_id" json:"memberId"`
	PlaceId         int    `gorm:"column:place_id" json:"placeId"`
	CouponId        int    `gorm:"column:coupon_id" json:"couponId"`
	Discounts       int    `gorm:"column:discounts" json:"discounts"`
	DeductionAmount int    `gorm:"column:deduction_amount" json:"deductionAmount"`
	Threshold       int    `gorm:"column:threshold" json:"threshold"`
	Type            uint8  `gorm:"column:type" json:"type"`
	OrderType       uint8  `gorm:"column:order_type" json:"orderType"`
	Status          uint8  `gorm:"column:status" json:"status"`
	ProjectLabel    string `gorm:"column:project_label" json:"projectLabel"`
	TradeNo         string `gorm:"column:trade_no" json:"tradeNo"`
	DeviceSn        string `gorm:"column:device_sn" json:"deviceSn"`
	MemberName      string `gorm:"column:member_name" json:"memberName"`
	MemberPhone     string `gorm:"column:member_phone" json:"memberPhone"`
	Name            string `gorm:"column:name" json:"name"`
	Message         string `gorm:"column:message" json:"message"`
	StartTime       string `gorm:"column:start_time" json:"startTime"`
	EndTime         string `gorm:"column:end_time" json:"endTime"`
}

func (m *OrderCouponRecordDb) TableName() string {
	return "order_coupon_record"
}
